var express = require('express');
var router = express.Router();
const {Course,User,Category,Chapter} = require('../models');
const { failure, success, NotFoundError } = require('../utils/response');
const { where } = require('sequelize');

// 查询章节对应的课程与创建的用户和此对应课程下的所有章节
router.get('/:id',async (req,res,next) => {
    try {
        const {id} = req.params
        // const condition = {
        //     // 章节-课程
        //     // 一个章节对应一个课程，一个课程对应一个用户创建，
        //     //但课程与用户之间没有直接关系，所以要获得这些数据要使用多级关联
        //     attributes:{exclude:['CourseId']},//查询结果排除courseid
        //     include:[
        //         {
        //             model:Course,
        //             as:'course',
        //             attributes:['id','name'],//查询结果包含id和name
        //             include:[
        //                 {
        //                     model:User,
        //                     as:'user',
        //                     attributes:['id','username','nickname','company']
        //                 }
        //             ]
        //         }
        //     ]
        // }

        const chapter = await Chapter.findByPk(id,{
            attributes:{exclude:['CourseId']}
        })
        if(!chapter){
            throw new NotFoundError(`ID为${id}的章节未找到`)
        }
        // 查询此章节对应的课程
        const course = await chapter.getCourse({
            attributes:['id','name','userId']
        })
        // 查询此课程对应的用户
        const user = await course.getUser({
            attributes:['id','username','nickname']
        })

        // 查找此章节的课程下的所有章节
        const chapters = await Chapter.findAll({
            attributes:{exclude:['courseId','cotent']},
            where:{courseId:chapter.courseId},
            order:[['rank','ASC'],['id','DESC']]
        })

        success(res,'查询章节成功',{chapter,course,user,chapters})
    } catch (error) {
        failure(res,error)
    }
    
})

module.exports = router